package com.xbongbong.paas.service;

import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.paas.toolbox.wrap.BaseDTO;
import com.xbongbong.paas.toolbox.wrap.BaseVO;
import com.xbongbong.pro.domain.entity.FormConfigEntity;
import com.xbongbong.pro.form.pojo.dto.FormConfigAddBatchDTO;
import com.xbongbong.pro.form.pojo.dto.FormConfigGetDTO;
import com.xbongbong.pro.form.pojo.dto.FormConfigGetMultiDTO;
import com.xbongbong.pro.form.pojo.dto.FormConfigSetDTO;
import com.xbongbong.pro.form.pojo.vo.FormConfigAddBatchVO;
import com.xbongbong.pro.form.pojo.vo.FormConfigGetVO;
import com.xbongbong.pro.form.pojo.vo.FormConfigMultiGetVO;
import com.xbongbong.pro.form.pojo.vo.FormConfigSetVO;

/**
 * @description: 表单配置
 * @Author: feng.zheng
 * @date: 2019-05-21 16:12
 */
public interface FormConfigService {
    /**
     * 启用/关闭表单配置(开关级配置)
     *
     * @param formConfigSetDTO 入参
     * @return
     * @throws XbbException
     */
    FormConfigSetVO enable(FormConfigSetDTO formConfigSetDTO) throws XbbException;

    /**
     * 获取配置
     *
     * @param formConfigGetDTO
     * @return
     * @throws XbbException
     */
    FormConfigGetVO getFormConfig(FormConfigGetDTO formConfigGetDTO) throws XbbException;

    /**
     * 开启/关闭客户判重
     *
     * @param baseDTO
     * @return
     * @throws XbbException
     */
    FormConfigGetVO enableCustomerCheckRepeat(BaseDTO baseDTO) throws XbbException;

    FormConfigAddBatchVO saveBatch(FormConfigAddBatchDTO formConfigAddBatchDTO) throws XbbException;

    /**
     * 查询跨阶段按钮和回退按钮
     * @param formConfigGetMultiDTO
     * @return
     * @throws XbbException
     */
    FormConfigMultiGetVO getButtonByFormId(FormConfigGetMultiDTO formConfigGetMultiDTO) throws XbbException;

    /**
     * @Author: wujian
     * @Description: 获取产品的数据权限配置
     * @Date: 下午2:45 2022/8/25
     * @Param: [formConfigGetMultiDTO]
     * @return: com.xbongbong.pro.form.pojo.vo.FormConfigMultiGetVO
     **/
    FormConfigEntity getProductDataSet(FormConfigGetMultiDTO formConfigGetMultiDTO) throws XbbException;

    // 保存产品数据权限配置
    BaseVO saveProductDataSet(FormConfigSetDTO formConfigSetDTO) throws XbbException;


}
